Skip to content

feat: apply provision configuration atomically - #3

Merged
3metaJun merged 2 commits into
metaproxy/v1.0.0-rc.21from
feat/atomic-provision-release
Aug 27, 2026
Merged

feat: apply provision configuration atomically#3
3metaJun merged 2 commits into
metaproxy/v1.0.0-rc.21from
feat/atomic-provision-release

Conversation

@3metaJun

Copy link
Copy Markdown
Owner

📝 变更描述 / Description

metaproxy 的渠道和计费倍率原先通过多个管理接口依次写入,任一步失败都会留下混合配置。本 PR 为 metaproxy fork 增加 root-only 原子发布接口:同一事务内替换带 metaproxy-provision 标签的渠道、abilities、模型倍率和分组倍率,并用配置摘要做 CAS 与幂等重试。

事务提交后不逐项刷新运行时缓存。进程会冻结定时同步,继续使用完整旧配置;宿主重启 new-api 后才从数据库装入完整新配置。/api/status 暴露当前进程已加载的摘要,部署系统据此判断是否真正生效。

本实现由 Codex 辅助完成,提交者已检查变更范围和验证结果;合并前还会使用 Gemini 3.7 Flash 独立审查。

🚀 变更类型 / Type of change

  • 🐛 Bug 修复 (Bug fix)
  • ✨ 新功能 (New feature)
  • ⚡ 性能优化 / 重构 (Refactor)
  • 📝 文档更新 (Documentation)

🔗 关联任务 / Related Issue

  • metaproxy production configuration release

✅ 提交前检查项 / Checklist

  • 人工确认: 描述由 Codex 起草并经提交者整理,不声明为纯人工撰写。
  • 非重复提交: 已检查本 fork 的现有 PR,没有同类提交。
  • Bug fix 说明: 本 PR 不标记为 Bug fix。
  • 变更理解: 已核对事务边界、运行时缓存切换和失败路径。
  • 范围聚焦: 只包含 metaproxy 配置发布接口及测试。
  • 本地验证: 已运行受影响包测试、完整 Docker 构建和真实进程 E2E。
  • 安全合规: 请求只允许固定配置项,日志与响应不输出渠道密钥。

📸 运行证明 / Proof of Work

  • go test ./model ./controller ./router -run TestApplyMetaproxyProvision|TestValidateMetaproxyProvisionRequest -count=1
  • Docker 从当前源码构建成功:metaproxy-newapi:dev
  • 临时 SQLite 实例 E2E:提交后活动摘要保持旧值;重启后变为目标摘要;再次重放返回 already_applied=truerestart_required=false
  • go test ./... 的新增包通过;仓库既有失败为根包缺少 web/*/dist,以及单独运行也失败的 affinity 计数测试

Agent: GPT-5.6 Sol via T3 Code

@3metaJun
3metaJun merged commit bb5837c into metaproxy/v1.0.0-rc.21 Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant